package com.xinchen.aiowaste.app

import androidx.lifecycle.ViewModelStore
import com.blankj.utilcode.util.AppUtils
import com.maple.base.app.BaseApp
import com.maple.utils.widget.update.OKHttpUpdateHttpService
import com.maple.utils.const.UtilsInit
import com.maple.utils.util.EncryptDecodeUtils
import com.maple.utils.util.ToastUtils
import com.xuexiang.xupdate.XUpdate
import com.xuexiang.xupdate.entity.UpdateError.ERROR.CHECK_NO_NEW_VERSION
import com.xuexiang.xupdate.proxy.IUpdateHttpService


class MyApplication: BaseApp() {

    companion object {
        @JvmStatic
        lateinit var instance: MyApplication
            private set
    }

    override fun getAppPackageName(): String = this.packageName

    override fun initApp() {
        super.initApp()
        instance = this
        UtilsInit.init(getAppPackageName())
    }

    override fun initUpdate() {
//        super.initUpdate()
        XUpdate.get()
            .debug(true)
            .isWifiOnly(false) //默认设置只在wifi下检查版本更新
            .isGet(true) //默认设置使用get请求检查版本
            .isAutoMode(false) //默认设置非自动模式，可根据具体使用配置
            .setOnUpdateFailureListener { error ->
                //设置版本更新出错的监听
//                if (error.code != CHECK_NO_NEW_VERSION) { //对不同错误进行处理
//                    ToastUtils.showToast(error.toString())
//                }
                ToastUtils.showToast(error.toString())
            }
            .supportSilentInstall(false) //设置是否支持静默安装，默认是true
            .setIUpdateHttpService(OKHttpUpdateHttpService(EncryptDecodeUtils.APP_ID, Config.getAppName(), AppUtils.getAppVersionName())) //这个必须设置！实现网络请求功能。
            .init(this)
    }

    override val viewModelStore: ViewModelStore
        get() = ViewModelStore()

}